package com.briup.oagg.facade.service.model;

import com.briup.oagg.facade.web.vm.page.Page;
import com.briup.oagg.facade.web.vm.model.ModelInfoVM;
import com.briup.oagg.facade.web.vm.model.ModelInfoAddOrUpdateVM;
import com.briup.oagg.facade.web.vm.model.ModelInfoListVM;
import com.briup.oagg.facade.web.vm.model.ModelStatisticVM;

import java.util.List;

/**
 * 模型信息业务逻辑接口
 *
 * @author briup
 */
public interface IModelInfoService{
    /**
     * 新增或修改模型信息
     * @param vm 模型信息
     */
    void addOrUpdate(ModelInfoAddOrUpdateVM vm);

    /**
     * 分页多条件查询模型信息
     * @param pageNum   当前页码
     * @param pageSize  每页大小
     * @param modelName  模型名称
     * @param modelType 模型类型
     */
    Page<ModelInfoListVM> findByPage(Integer pageNum, Integer pageSize, String modelName, String modelType);

    /**
     * 按月统计各分类模型数量
     * @param year
     * @return
     */
    List<ModelStatisticVM> countByMonth(Integer year);

    /**
     * 按月统计各类模型训练数量
     * @param year
     * @return
     */
    List<ModelStatisticVM> countModelTrainByMonth(Integer year);

    /**
     * 根据类型查询所有的模型信息
     * @param modelType
     * @return
     */
    List<ModelInfoVM> findByType(String modelType);

    /**
     * 统计模型数量
     * @return
     */
    Integer count();

    /**
     * 根据模型编号删除模型信息
     * @param modelId
     */
    void deleteById(String modelId);
}
